package gamethreads;

public class Barijera {
	
	//POLJA KLASE
	
	private int brojNiti;//koliko niti treba da se blokira na barijeri
	private int brojac;//koliko niti se blokiralo na barijeri
	
	//KONSTRUKTOR
	
	public Barijera(int brojNiti) {
		this.brojNiti = brojNiti;
		brojac = 0;
	}
	
	//GET I SET METODE
	
	public int getBrojNiti() {
		return brojNiti;
	}
	public void setBrojNiti(int brojNiti) {
		this.brojNiti = brojNiti;
	}
	public int getBrojac() {
		return brojac;
	}
	public void setBrojac(int brojac) {
		this.brojac = brojac;
	}
	
	//METODA CEKAJ
	
	public synchronized void cekaj() throws InterruptedException {
		brojac++;
		//ako poslednja nit dodje do barijere oslobadja ostale i ne blokira se
		if(brojac == brojNiti) {
			brojac = 0;
			notifyAll();
		}
		//u suprotnom se blokira
		else {
			wait();
		}
	}

}
